<?php

namespace app\common\model\virtual;

use app\common\loader\ModelMerchant;
use app\common\model\BaseModel;
use think\Exception;

/**
 * 商户虚码交易记录
 * Class VirtualTransaction
 * @package app\common\model\virtual
 */
class VirtualTransactionModel extends BaseModel
{
    //
    protected $name = 'virtual_transaction';

    // 设置字段信息
    protected $schema = [
        'id' => 'int',        //
        'mer_id' => 'string',        // 店铺ID
        'flag' => 'int',        // 标识:1 虚码,2实码
        'type' => 'int',        // 交易类型: 1 充值购买 2下单转出
        'num' => 'int',        // 变动数
        're_num' => 'int',        // 变动后数量
        'ip' => 'string',        // 操作IP
        'memo' => 'string',        // 备注
        'op_user' => 'int',        // 操作人
        'create_at' => 'datetime',        // 创建时间
        'update_at' => 'datetime',        // 更新时间
    ];

    /**
     * 购买虚码
     * @param string $merId
     * @param float  $money
     * @param int    $num
     * @param int    $opUser
     * @param string $memo
     * @return mixed
     */
    public function buyVirtual(string $merId, float $money, int $num, int $opUser, string $memo = '')
    {
        // 减去相应金额
        // 增加相应的虚码数
        // 增加记录
        try {
            $this->startTrans();

            $stockModel = ModelMerchant::MerchantStock();
            $stockModel->userBalanceEdit($merId, MONEY_CHANGE_SUB, $money, "购买虚码", $opUser, '', 2);
            $stockModel->userVirtualEdit($merId, MONEY_CHANGE_ADD, $num, "购买虚码", $opUser);
            $this->commit();
        } catch (Exception $e) {
            $this->rollback();
            throw  $e;
        }


        return [];
    }

    /**
     * 虚码交易记录
     * @param $option
     * @return mixed
     * @throws Exception
     * @throws \think\db\exception\DbException
     */
    public function pageList($option)
    {
        $option['without_field'] = 'flag';
        $option['order'] = 'id desc';


        return $this->page($option);
    }
}
